﻿using Seg.Componente;
//using Presentacion.Clases.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
//using Seg.Logica;
//using Seg.Entidades;
using TestMenu.Clases;

using SSEG.UInterfaces;
using System.Web.Configuration;

namespace TestMenu.Controllers
{
    public class LoginController : Controller
    {
        //
        // GET: /Login/

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult Autentifica(string Usuario, string Contra)
        {
            Resultado resultado = new Resultado();
            try
            {
                if (Usuario != string.Empty && Contra != string.Empty)
                {
                    var usuarioWindow = new UIEncriptador().EncriptarCadena(Usuario);
                    var clave = new UIEncriptador().EncriptarCadena(Contra);
                    var prefijo = System.Web.Configuration.WebConfigurationManager.AppSettings["PrefijoSist"];
                    var obj = new Autentificar().Autentificacion(usuarioWindow, clave, prefijo);

                    if (obj != null)
                    {
                        if (obj.result != 0)
                        {
                            Session[ Constante.Sesiones.Nombre] = obj.Nombre;
                            Session[ Constante.Sesiones.Usuario] = new UIEncriptador().DesEncriptarCadena(obj.UsuarioLogin);
                            Session[ Constante.Sesiones.CodigoUsuarioOficina] = obj.CodigoUsuarioOficina;
                            Session[ Constante.Sesiones.CodigoOficina] = obj.CodigoOficina;
                            Session[ Constante.Sesiones.Oficina] = obj.Oficina;
                            Session[ Constante.Sesiones.CodigoPerfil] = obj.CodigoPerfil;
                            Session[ Constante.Sesiones.Perfil] = obj.Perfil;
                            Session[ Constante.Sesiones.CodigoPerdilUsuario] = obj.CodigoPerdilUsuario;
                            Session[ Constante.Sesiones.IdLogAuditoria] = obj.CodigoPerdilUsuario;
                            Session[ Constante.Sesiones.Correo] = obj.UsuarioCorreo;


                            string html = new Menu().CargarMenu(Convert.ToInt32(obj.CodigoPerfil),
                                                       Convert.ToString(WebConfigurationManager.AppSettings["PrefijoSist"]),
                                                       Convert.ToInt32(obj.CodigoUsuarioOficina),
                                                       Convert.ToInt32(obj.CodigoPerdilUsuario),
                                                       Convert.ToString(WebConfigurationManager.AppSettings["PaginaMain"]));
                            if (html.Contains("-999"))
                            {
                                resultado.result = 0;
                                resultado.message = "No se encontraron opciones asignadas al usuario.";
                            }
                            else
                            {
                                resultado.result = 1;
                                Session[Constante.Sesiones.MenuCargado] = html;
                            }
                        }
                        else
                        {
                            resultado.result = 0;
                            resultado.message = obj.message;
                        }
                    }
                    else
                    {
                        resultado.result = 0;
                        resultado.message = "*Login Incorrecto.";
                    }
                }
                else
                {
                    resultado.result = 0;
                    resultado.message = "*Usuario y Contrasenia son obligatorios.";
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        

        public ActionResult Logout()
        {
            Session.Clear();
            Session.Abandon();
            Response.Redirect("~/Login");
            return View();
        }

        public JsonResult ValidarSesion()
        {
            Resultado resultado = new Resultado();
            if (Session[ Constante.Sesiones.Usuario] == null)
            {
                resultado.result = Constante.MensajeRetorno.LOGOUT;
                resultado.message = Constante.MensajeGenerico.MSG_LOGOUT;
                resultado.isRedirect = true;
                resultado.redirectUrl = Url.Action("Index", "Login");

            }
            else
            {
                resultado.result = Constante.MensajeRetorno.OK;
                resultado.message = string.Empty;
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }


    }
}
